﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLLopHoc.DoiTuongDuLieu;
using QLLopHoc.XuLyDuLieu;
using QLLopHoc.KetNoiDatabase;

namespace QLLopHoc
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

    
        private void frmMain_Load(object sender, EventArgs e)
        {
            List<DTLopHoc> dsLH = XLLopHoc.LayDSLopHoc();
            cmbDSLop.Items.AddRange(dsLH.ToArray());
            cmbDSLop.DisplayMember = "TenLopHoc";
            if (dsLH.Count > 0)
            {
                cmbDSLop.SelectedIndex = 0;
            }

        }

        private void cmbDSLop_SelectedIndexChanged(object sender, EventArgs e)
        {
            int idx = cmbDSLop.SelectedIndex;
            if (idx == -1)
            {
                return;
            }
            DTLopHoc lh = (DTLopHoc)cmbDSLop.Items[idx];
            DTGiangVien gv = XLGiangVien.LayGVTuMS(lh.MaGiangVien);
            lbGVLH.Text = gv.Hoten;
            List<DTSinhVien> dssv = XLLopHoc.LayDSMaSVCuaLH(lh.TenLopHoc);
            lvDSSinhVien.Items.Clear();
            ListViewItem lvi = null;
            int stt = 0;
            foreach (DTSinhVien sv in dssv)
            {
                stt++;
                lvi = new ListViewItem(stt.ToString());
                lvi.SubItems.Add(sv.MSSV);
                lvi.SubItems.Add(sv.Hoten);
                lvi.Tag = sv;
                lvDSSinhVien.Items.Add(lvi);
            }
        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //private void giớiThiệuToolStripMenuItem_Click(object sender, EventArgs e)
        //{
        //    frmGioiThieu f1 = new frmGioiThieu();
        //    f1.ShowDialog();

        //}

        private void btnThemLH_Click(object sender, EventArgs e)
        {
            frmThemLH frm = new frmThemLH(); 
            if (frm.ShowDialog() == DialogResult.OK) 
            { 
                DTLopHoc lh = frm.LopHoc; 
                string strError = XLLopHoc.ThemLopHoc(lh); 
                if (strError == "") 
                { 
                    MessageBox.Show("Đã thêm lớp học thành công!"); 
                    cmbDSLop.Items.Add(lh); 
                    return; 
                } 
                MessageBox.Show("Error: " + Environment.NewLine + strError); }
        }

        private void btnCapNhatGVLH_Click(object sender, EventArgs e)
        {
            object obj = cmbDSLop.SelectedItem;
            if (obj == null)
            {
                MessageBox.Show("Chưa chọn lớp học!");
                return;
            }
            frmCapNhatGV frm = new frmCapNhatGV((DTLopHoc)obj);
            if (frm.ShowDialog() == DialogResult.OK)
            {
                DTLopHoc lh = frm.LopHoc;
                string strError = XLLopHoc.CapNhatLH(lh);
                if (strError == "")
                {
                    MessageBox.Show("Đã cập nhật lớp học thành công!");
                    DTGiangVien gv = XLGiangVien.LayGVTuMS(lh.MaGiangVien);
                    lbGVLH.Text = gv.Hoten;
                    return;
                }
                MessageBox.Show("Error: "+ Environment.NewLine + strError);
            }
        }

        private void btnXoaLH_Click(object sender, EventArgs e)
        {
            object obj = cmbDSLop.SelectedItem; 
            if (obj == null) 
            { 
                MessageBox.Show("Chưa chọn lớp học!"); 
                return; 
            }
            if (MessageBox.Show("Bạn thật sự muốn xóa lớp học?", "Confirm", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return; 
            }
            string strError = XLLopHoc.XoaLopHoc(((DTLopHoc)obj).TenLopHoc); 
            if (strError == "") 
            { 
                MessageBox.Show(".a xoa l.p h.c thanh cong!"); 
                cmbDSLop.Items.Remove(obj); 
                if (cmbDSLop.Items.Count > 0) 
                { 
                    cmbDSLop.SelectedIndex = 0; 
                } 
            } 
            else 
            { 
                MessageBox.Show(strError, "Error"); 
            }
        }

        private void btnThemSVLH_Click(object sender, EventArgs e)
        {
            object obj = cmbDSLop.SelectedItem; 
            if (obj == null) 
            { 
                MessageBox.Show("Chưa chọn lớp học!"); 
                return; 
            } 
            DTLopHoc lh = (DTLopHoc)obj; 
            frmThemSVChoLH frm = new frmThemSVChoLH(lh.TenLopHoc);
            if (frm.ShowDialog() == DialogResult.OK) 
            { List<DTSinhVien> dssv = frm.DSSV; 
              string kq = ""; int dem = 0; 
              ListViewItem lvi = null; 
              int stt = lvDSSinhVien.Items.Count; 
              foreach (DTSinhVien sv in dssv) 
              { 
                  if (XLLopHoc.ThemSVVaoLH(sv.MSSV, lh.TenLopHoc) == "") 
                  { 
                      kq += " +" + sv.MSSV + Environment.NewLine; 
                      ++dem; 
                      ++stt; 
                      lvi = new ListViewItem(stt.ToString()); 
                      lvi.SubItems.Add(sv.MSSV); 
                      lvi.SubItems.Add(sv.Hoten); 
                      lvi.Tag = sv; 
                      lvDSSinhVien.Items.Add(lvi); 
                  } 
              }
            MessageBox.Show("Đã thêm thành công " + dem.ToString() + " sinh viên vào lớp học." + Environment.NewLine + kq, "Thông báo");
        }
        }

        private void btnXoaSVLH_Click(object sender, EventArgs e)
        {
            ListView.SelectedListViewItemCollection dsSelect = lvDSSinhVien.SelectedItems; 
            if (dsSelect.Count == 0) 
            { 
                MessageBox.Show("Chưa chọn sinh viên!"); 
                return; 
            } 
            if (MessageBox.Show("Bạn thật sự muốn xóa các sinh viên đã chọn?", "Confirm", MessageBoxButtons.YesNo) == DialogResult.No) 
            { 
                return; 
            }
            string tenLH = ((DTLopHoc)cmbDSLop.SelectedItem).TenLopHoc; 
            string kq = ""; 
            int dem = 0; 
            DTSinhVien sv = null; 
            foreach (ListViewItem lvi in dsSelect) 
            { 
                sv = (DTSinhVien)lvi.Tag; 
                if (XLLopHoc.XoaSVCuaLH(sv.MSSV, tenLH) == "") 
                { 
                    dem++; 
                    kq += " +" + sv.MSSV + Environment.NewLine; 
                    lvDSSinhVien.Items.Remove(lvi); 
                } 
            }
            MessageBox.Show("Đã xóa thành công " + dem.ToString() + " sinh viên của lớp học." + Environment.NewLine + kq, "Thông báo"); 
            ListViewItem lvitemp = null; 
            for (int i = 0; i < lvDSSinhVien.Items.Count; ++i) 
            { 
                lvitemp = lvDSSinhVien.Items[i]; 
                lvitemp.Text = (i + 1).ToString(); 
            }
        }

    }
}
